package com.cy.common.util;


import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

import javax.servlet.http.HttpServletRequest;

//当类上没有泛型约束时,方法就不能有泛型约束
//或者方法前后都用泛型进行约束
//static方法 通过类名直接调用方法;不需要设置多态或者new对象

/**
 * 泛型约束越时一种在编译阶段约束类中属性,方法参数,方法返回值类型,运行时无效
 * 一般运用在框架,共性问题,工具类,
 * 分为类泛型和方法泛型
 * 类泛型,约束类中的实列属性,约束非静态方法参数,约束非静态返回值类型
 * 格式为  class ClassA<T>{  }
 *
 *方法泛型,一般应用最多的时静态方法,语法为<泛型>方法返回值类型<泛型> 方法名(参数列表)
 * 格式为 (static <T>String<T> print(){};
 *
 * 限定通配符
 * ?       无界通配符
 * ? super  下界通配符     通常用于存数据     只能存本类或者父类
 *
 * ?extend  上界限定通配符  通常用于获取值    只能存本类或者子类
 * */

public class PageUtil {
        public static <T>Page<T> startPage(){
//        ServletRequestAttributes sra
//        = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        //获得请求对象
//        HttpServletRequest request =sra.getRequest();

                //获得请求对象
          HttpServletRequest request = ServletUtil.getRequest();

        //获取请求中的分页参数对象
        String pageCurrentStr =request.getParameter("pageCurrent");
        String pageSizeStr =request.getParameter("pageSize");
        //三目运算符
        int pageCurrent = StringUtil.isEmpty(pageCurrentStr)?1:Integer.parseInt(pageCurrentStr);
        int pageSize = StringUtil.isEmpty(pageSizeStr)?10:Integer.parseInt(pageSizeStr);
        //传入当前页码值pageCurrent,pageSize和每页的页面大小值
                // 启动分页查询
        return PageHelper.startPage(pageCurrent,pageSize);
        }
    }
